package paralla

import (
	"fmt"
	"sync"
)

var sql = "select * from employee limit 1"
var (
	/**
	sync.pool在使用时需要注意在每次gc时sync.pool的未引用对象都会被清理，因此sync.pool不适合做存放类似连接池的有状态对象。
	另外如果我们需要在系统停止时对sync.pool中的对象做一些清理操作也比较难实现，这时可以通过channel来预分配一定数量的对象，
	然后遍历channel对我们创建的对象进行清理
	*/
	pool = sync.Pool{
		New: func() interface{} {
			ins, _ := NewDataProcessor("json", "")
			return ins
		},
	}
)

type DataProcessor struct {
	Proto string
	Sql   string
}

func NewDataProcessor(format string, sql string) (*DataProcessor, error) {
	return &DataProcessor{Sql: sql, Proto: format}, nil
}

func (p DataProcessor) Process(payload string) {
	switch p.Proto {
	case "json":
		newSql := p.Proto + payload
		_ = newSql
	case "thrift":
		//xu裂化数据
	default:
		fmt.Println("not support Type")
	}
}
